package ambientes;

import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.JTextPane;
import javax.swing.border.BevelBorder;
import javax.swing.border.EtchedBorder;

import agentes.DiagramaSequencia;
import agentes.DiagramaSequenciaDicas;
import agentes.DiagramaSequenciaDicasRegras;
import agentes.DiagramaSequenciaRegras;
import agentes.DiagramaSequenciaRespostas;

public class DiagramaSequenciaInterface extends JPanel {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	DiagramaSequenciaRegras regras = new DiagramaSequenciaRegras();
	DiagramaSequenciaDicasRegras regrasDicas = new DiagramaSequenciaDicasRegras();
	DiagramaSequenciaDicas dicas = new DiagramaSequenciaDicas();
	DiagramaSequenciaRespostas respostas = new DiagramaSequenciaRespostas();

	int erros[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };

	JTextPane resp[] = new JTextPane[12];

	JPanel panel = new JPanel();
	private JTabbedPane tabbedPane;

	DiagramaSequenciaDrawLine panelCol1 = new DiagramaSequenciaDrawLine();
	private JPanel panel_dica;
	private JButton btnDica;

	private JTextPane txtpnDicas;

	public DiagramaSequenciaInterface() {
		setBackground(Color.WHITE);
		setAlignmentY(Component.TOP_ALIGNMENT);
		setAlignmentX(Component.LEFT_ALIGNMENT);
		setLayout(null);
		setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null));

		tabbedPane = new JTabbedPane(JTabbedPane.TOP);
		tabbedPane.setBounds(12, 12, 956, 550);
		add(tabbedPane);

		JPanel panel_1 = new BackgroundPanel();
		panel_1.setBorder(new EtchedBorder(EtchedBorder.RAISED, null, null));
		panel_1.setLayout(null);
		panel_1.setBounds(74, 12, 839, 105);
		tabbedPane.add(panel_1, "Enunciado");

		JPanel panel_1_1 = new JPanel();
		panel_1_1.setBounds(34, 26, 841, 472);
		panel_1_1.setBackground(new Color(255, 255, 255, 240));
		panel_1_1.setLayout(null);

		JTextPane enunciado = new JTextPane();
		enunciado.setFont(new Font("Dialog", Font.PLAIN, 14));
		enunciado.setContentType("text/html");
		enunciado.setOpaque(false);
		enunciado.setBounds(48, 43, 745, 378);
		enunciado.setEditable(false);
		enunciado
				.setText("<body style='font: 13px dialog;text-align: center'>" +
						"Chegou a época do tão aguardado festival <b>\"Rock in Sampa!\"</b>, realizado na cidade de São Paulo.<br><br>" +
						"Muitos músicos sonham em apresentar-se neste festival. " +
						"Infelizmente, somente bandas/cantores consagrados participam.<br><br>" +
						"Porém este ano está ocorrendo um concurso para eleger 2 (duas) bandas para <b>\"abrir\"</b> (apresentar-se antes) o show das bandas principais. <br><br>" +
						"Há <b>4 bandas</b> finalistas concorrrendo as <b>2(duas) vagas</b>. <br>" +
						"Quem ficar em <i>primeiro</i>, poderá escolher se deseja apresentar-se na abertura ou encerramento do festival, além de um prêmio em dinheiro! <br>" +
						"Portanto, a <b>ordem de seleção faz diferença</b>. <br><br><br>" +
						"Clique na aba \"Exercício\" e preencha o <b>diagrama da árvore (diagrama sequêncial)</b> com todas as possibilidades de <b>primeira e segunda banda selecionada</b>. " +
						"</body>");
		panel_1_1.add(enunciado);
		panel_1.add(panel_1_1);

		panel = new BackgroundPanel();
		panel.setBounds(0, 0, 284, 420);
		panel.setBorder(new EtchedBorder(EtchedBorder.RAISED, null, null));
		panel.setLayout(null);
		tabbedPane.add(panel, "Exercício");

		JPanel panel_2 = new JPanel();
		panel_2.setBounds(12, 25, 603, 466);
		panel.add(panel_2);
		panel_2.setBorder(new EtchedBorder(EtchedBorder.RAISED, null, null));
		panel_2.setLayout(null);
		panel_2.setBackground(new Color(255, 255, 255, 240));

		// /////////////////
		JTextPane desc1 = new JTextPane();
		desc1.setBounds(12, 12, 165, 50);
		panel_2.add(desc1);
		desc1.setEditable(false);
		desc1.setOpaque(false);
		desc1.setText("Se 1ª banda selecionada for:");

		// /////////////////
		JTextPane desc2 = new JTextPane();
		desc2.setBounds(189, 12, 160, 50);
		panel_2.add(desc2);
		desc2.setEditable(false);
		desc2.setOpaque(false);
		desc2.setText("A 2ª banda selecionada pode ser:");

		// /////////////////
		JTextPane desc3 = new JTextPane();
		desc3.setBounds(417, 12, 160, 42);
		panel_2.add(desc3);
		desc3.setOpaque(false);
		desc3.setEditable(false);
		desc3.setText("1º e 2º selecionados:");
		panelCol1.setBounds(9, 54, 588, 400);
		panel_2.add(panelCol1);
		panelCol1.setBorder(new EtchedBorder(EtchedBorder.RAISED, null, null));
		panelCol1.setLayout(null);

		panel_dica = new JPanel();
		panel_dica.setBounds(620, 25, 319, 466);
		panel.add(panel_dica);
		panel_dica.setBorder(new EtchedBorder(EtchedBorder.RAISED, null, null));
		panel_dica.setBackground(new Color(255, 255, 255, 240));
		panel_dica.setLayout(null);

		btnDica = new JButton("Mais Dicas!");
		btnDica.setAlignmentX(Component.CENTER_ALIGNMENT);
		btnDica.setBounds(new Rectangle(12, 18, 114, 25));
		panel_dica.add(btnDica);

		JLabel lblAjuda = new JLabel("");
		lblAjuda.setBounds(228, 12, 56, 50);
		panel_dica.add(lblAjuda);
		lblAjuda.setIcon(new ImageIcon(
				PrincipioFundamentalContagemInterface.class
						.getResource("/images/dica.png")));

		txtpnDicas = new JTextPane();
		txtpnDicas.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null,
				null, null));
		txtpnDicas.setContentType("text/html");
		txtpnDicas.setFont(new Font("Dialog", Font.PLAIN, 14));
		txtpnDicas.setEditable(false);
		txtpnDicas.setText("Caso precise de ajuda, clique em \"Mais Dicas!\".");
		txtpnDicas.setBounds(22, 75, 271, 356);
		panel_dica.add(txtpnDicas);

		controle();
		repaint();

	}

	public void controle() {
		dicas.setDica(txtpnDicas);
		btnDica.addMouseListener(new MouseAdapter() {

			public void mouseClicked(MouseEvent arg0) {
				dicas();
			}

		});

		regras.tell(respostas);

		int l = panelCol1.comboBox.size();
		for (int i = 0; i < l; i++) {
			final int aux = i;

			panelCol1.comboBox.get(i).addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					String banda = new String();
					if (aux < 3) {
						banda = panelCol1.bandas[0];
					} else if (aux < 6) {
						banda = panelCol1.bandas[1];
					} else if (aux < 9) {
						banda = panelCol1.bandas[2];
					} else {
						banda = panelCol1.bandas[3];
					}

					JComboBox<String> cb = (JComboBox<String>) e.getSource();

					DiagramaSequencia parte1 = new DiagramaSequencia();
					parte1.setAreaResposta(panelCol1.textPane.get(aux));
					parte1.setCombo(cb);
					parte1.setOpcao1(banda);
					parte1.setOpcao2(cb.getSelectedItem().toString());

					regras.tell(parte1);
					regras.tell(dicas);
					regras.run();
					revalidate();
					repaint();
				}
			});
		}

	}

	public void dicas() {

		regrasDicas.tell(dicas);
		regrasDicas.tell(respostas);
		regrasDicas.run();
		regrasDicas.retract(dicas);
		repaint();

	}

}
